// 枚举
// 作用：表示一组明确可选的值，和字面量类型联合类型类似。
// 解释：枚举可以定义一组常量，使用该类型后，约定只能使用这组常量中的其中一个。

// 场景1:
// 一个函数要接收一个参数, 参数的取值是: 111-上, 101-下, 121-左, 212-右

// 定义一个枚举
// 1. 枚举中第一个成员默认值是0, 后续成员依次累加
// 2. 枚举中成员的值可以改变, 一般都是改成数字, 一旦其中一个成员的值被改变, 后续成员依次累加, 之前的成员值不会被改变
// 3. 枚举中成员的值可以是数字, 也可以是字符串 (多数是数字), 如果是字符串建议用字面量联合类型
// 总结: 枚举适合 一组明确可选的值, 但值的语义化不高  这种场景
enum Direction {
  Up,
  Down,
  Left,
  Right
}

function changeDir(d: Direction) {
  if (d === 0) {
    console.log('往上')
  }
  if (d === 1) {
    console.log('往下')
  }
  if (d === 2) {
    console.log('往左')
  }
  if (d === 3) {
    console.log('往右')
  }
}

changeDir(Direction.Right)
